package jm.nj.demo05mian.demo03;

import java.io.File;
import java.io.FileReader;
import java.io.IOException;

/*
* 处理异常的第二种方式:try...catch
*
* 格式:
* try{
*       //需要被检测的语句
*       //可能的异常代码
*       }
*       catch(异常类  变量){//参数:try中抛出了什么异常,catch中就声明什么异常变量
*                   //异常的处理语句(循环,判断,调用方法,变量定义)
*       }
*       finally{
*           //一定会被执行的语句.
*       }
*
* 注意:
*       不管当前程序是否出现异常,finally中的代码都会执行
*       一般finally用于释放资源(关闭流)
*
*
* */
public class Demo02CatchFinally {
    public static void main(String[] args) {
    /*
    * 为了保证遍历的作用域足够,变量的声明必须在try..catch的外边
    * 必须给变量fr增加一个默认值,防止使用的时候没有值
    * */
        FileReader fr = null;
        try {
            fr = new FileReader("a.txt");
            int len = fr.read();
            System.out.println(len);

        }catch (IOException ex){
            System.out.println(ex);
        }finally {
            System.out.println("不管有没有异常,finally中的代码都会执行");
            /*
            * 关闭流也可能出现异常,出现异常必须处理
            * 要么抛出,要么try..catch
            * 必须对变量fr进行判断,如果不是null,在关闭流
            * */
            try {
                if (fr  != null){

                    fr.close();
                }
            }catch (IOException  ee){
                System.out.println("关闭流异常");
                System.out.println(ee);
            }
        }
        System.out.println("处理关闭异常代码");
    }
}
